package ph.gov.marikina.mcsmtms.services;

import java.util.Date;
import java.util.List;
import java.util.Map;

import ph.gov.marikina.mcsmtms.dao.SituationReportDAO;
import ph.gov.marikina.mcsmtms.dao.UserDAO;
import ph.gov.marikina.mcsmtms.domain.SituationReport;

public interface SituationReportService {
	public void addSituationReport(SituationReport situationReport);
	public List<SituationReport> getAllSituationReports();
	public List<SituationReport> getHazardMapSituationReports();
	
	public SituationReport approveSituation(String id);
	public void setSituationForVerification(String id);
	public void setSituationReportDAO(SituationReportDAO situationReportDAO);
	public void setUserDAO(UserDAO userDAO);
	public void setSmsSenderService(SmsSenderService smsSenderService);
	public SituationReport rejectSituation(String id);
	
	public List<SituationReport> getNotifications();
	public List<SituationReport> getForValidationNotifications();
	public List<SituationReport> getHazardMapSituationReports(String direction);
	//public List<SituationReport> getValidReportsForDateRange(Date startDate, Date endDate, String reportType);
	public List<SituationReport> getValidReportsForDateRange(Date startDate,
			Date endDate);
	Map<String, Map<String, Integer>> getSituationCountsForDateRange(
			Date startDate, Date endDate);
	List<Map<String, Object>> getFrequentlyFloodedStreets(Date startDate,
			Date endDate);
	List<Map<String, Object>> getMostAccidentProneStreets(Date startDate,
			Date endDate);
	Map<String, Integer> getAccidentCountsPerStreet(Date startDate, Date endDate);
	List<Map<String, Object>> getMostCongestedStreets(Date startDate,
			Date endDate);
	List<SituationReport> getForValidationNotifications(String road);
}
